package org.origin.ferret.system.mapstruct;

import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.origin.centre.model.enums.XUsable;
import org.origin.centre.support.utils.EnumUtil;
import org.origin.ferret.system.model.dto.role.SysRoleInsertDto;
import org.origin.ferret.system.model.dto.role.SysRoleUpdateDto;
import org.origin.ferret.system.model.entity.SysRoleEntity;
import org.origin.ferret.system.model.vo.role.SysRoleVo;

/**
 * 系统角色对象-转换
 *
 * @author ferret
 * @version 2024-05-08
 */
@Mapper(componentModel = "spring")
public interface SysRoleMapstruct {

    SysRoleEntity toEntity(SysRoleInsertDto insertDto);

    SysRoleEntity toEntity(SysRoleUpdateDto updateDto);

    @Mapping(target = "statusLabel", expression = "java(getStatusLabel(entity.getStatus()))")
    SysRoleVo toVo(SysRoleEntity entity);

    default String getStatusLabel(Integer status) {
        return EnumUtil.getTitle(XUsable.class, status);
    }
}
